/* console.log('hello jingdong')
let [n, k ,d] = [5,100,100]

let dogList = [1,2,9,4,5]
let buyList = [30,60,90,120,150]
let eatList = [11,22,44,88,176]
let max = -1 //表示可以领养狗狗的喜爱值

//先通过领养的成本过滤掉一部分狗狗,
//[{index:xxx,eat:xxx,like:xxx}],
//通过领养成本过滤出来的狗狗，index表示狗狗的标号，eat表示喂养成本,like表示喜爱值
let canBuy = []
buyList.map((item,index)=>{
    if(item <= k)
        canBuy.push({index,eat:eatList[index],like:dogList[index]})
})
canBuy.map((item,index)=>{
    let temp = (d/n)*(item.like)
    if(temp >= item.eat){
        //预算够
        max = max < item.like ? item.like : max
    }
})
console.log(max) */


let [a, b, f, k] = read_line().split(" ")
a = parseInt(a)
b = parseInt(b)
f = parseInt(f)
k = parseInt(k)

let [a, b, f, k] = read_line().split(" ")
a = parseInt(a)
b = parseInt(b)
f = parseInt(f)
k = parseInt(k)

/*
小明在一条直线上执行任务，需要在坐标0的位置和坐标a的位置之间来回移动。每次行动小明需要从0移动到a，
或者从a移动到0。每移动1个单位坐标，小明携带的仪器需要耗费对应1个单位的能量。携带的仪器最多可装b个单位能量，
初始时仪器是满能量。坐标0和a之间有一处坐标f位置可以给仪器充能。
现在小明从0移动至a或者从a移动至0都算一次行动。请问小明从0出发，希望完成k次行动，最少需要在f坐标处充能多少次。
a、b、f、k，
6 9 2 4
4
样例2：

输入样例：6 10 2 4

输出样例：2

 

样例3：

输入样例：6 5 4 3

输出样例：-1
*/
let res = 0
// 首先讨论f在这个0-a区间外面，就无法充能
// 这样就看初始能量b的数量够不够k次
if(f > a){
    //一趟需要a个单位的能量，总共k次
    if(a*k <= b){
        res = 0
    }else{
        res = -1 //无法完成行动
    }
}else{
    //两边的端点到充能点的距离*2 》 带的能力上限值b,无法完成
    if(b < 2*f || b < 2*(a - f)){
        res = -1
    }
    //两边的端点到充能点的距离*2 《 带的能力上限值b,就可以完成
    else{
        //如果0-a的距离加上任意一段到充能点的距离 》 能量上限值b,那么每次经过都需要补充能量
        // 这样的话充能次数就是执行次数k
        if((a + f) > b || (2*a -f) > b){
            res = k
        }else{
            //直接一次性计算完成k次需要多少能量，从而求出最少需要充能多少次 
        	let temp = a * k
        	res= Math.ceil((temp - b) / b)
        }
    }
}
console.log(res)